
#ifndef _Oz_WebUi_IDictionary_H_
#define _Oz_WebUi_IDictionary_H_

#include <Oz/Webui/Webui.h>

namespace Oz{
    namespace Webui{

        class IDictionary{
            public:
            virtual ~IDictionary();
            virtual void setValue(const std::string& name,const std::string& value) = 0;
            virtual void setIntValue(const std::string& name,int value) = 0;
            virtual void setLongValue(const std::string& value,long value) = 0;
            virtual void setFloatValue(const std::string& name,float value) = 0;
            virtual IDictionaryPtr addSectionDictionary(const std::string& name) = 0;
            virtual IDictionaryPtr addIncludeDictionary(const std::string& name) = 0;
            virtual const std::string getValue() const = 0;
            virtual const std::string getValueAsInt() const = 0;
            virtual const std::string getValueAsLong() const = 0;
            virtual const std::string getValueAsFloat() const = 0;
            virtual IDictionaryPtr getSectionDictionary(const std::string& name)const = 0;
            virtual IDictionarySeq getSectionDictionaries()const = 0;
            virtual IDictionaryPtr getIncludeDictionary(const std::string& name) = 0;
            virtual IDictionarySeq getIncludeDictionaries()const = 0;

            virtual ITemplatePtr getTemplate()const = 0;
            virtual void setTemplate(const ITemplatePtr& itemplate) = 0;

            virtual std::string expand()const = 0;
            protected:
            IDictionary();
            IDictionary(const IDictionary& other);
            IDictionary& operator=(const IDictionary& rhs);
        };
    }
}
#endif
